package com.dragon.modules.yuegou.enums.code;


import com.dragon.common.constant.enums.IBusinessCode;

import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 奖品错误信息
 * 
 * @author ZSH
 *
 */
public enum ActivityCode implements IBusinessCode {

	/**
	 * 活动还没开始或已结束
	 */
	NOT_STARTED_ENDED(30001, "活动还没开始或已结束"),
	
	/**
	 * 会员已参加活动
	 */
	MEMBER_HAS_JOIN(30002, " 会员已参加活动"),
	
	/**
	 * 奖品数量不能大于库存
	 */
	AWARD_NUM_IS_EXCEEDING_STANDARD(30003, "奖品数量不能大于库存"),
	
	/**
	 * 抽奖时间必须大于报名结束时间
	 */
	LOTTERY_TIME_IS_NOT_CORRECT(30004, "抽奖时间必须大于报名结束时间"),
	/**
	 * 活动结束时间必须大于当前时间
	 */
	ACTIVITY_TIME_IS_NOT_CORRECT(30005, "活动结束时间必须大于当前时间"),

	/**
	 * 活动物品结束时间需要大于活动时间
	 */
	ACTIVITY_TIME_IS_BEFORE_END_TIME(30006, "活动物品结束时间需要大于活动时间"),

	/**
	 * 活动物品结束时间需要大于活动时间
	 */
	ACTIVITY_BEGIN_TIME_MUST_BEFORE_END_TIME(30007, "活动物品结束时间必须大于活动开始时间"),
	/**
	 * 只能下线未开始活动
	 */
	UNDER_NOT_STARTED(30008, "只能下线未开始活动"),
	
	/**
	 * 活动不存在
	 */
	ACTIVITY_NOT_EXIST(30009, "活动不存在"),
	
	/**
	 * 活动已下架
	 */
	ACTIVITY_REMOVED(30010, "活动已下架"),
	
	/**
	 * 暂无会员参加活动
	 */
	NOT_PARTIC(30011, "暂无会员参加活动"),
	
	/**
	 * 奖品不存在
	 */
	PRIZE_NOT_EXIST(30012, "奖品不存在"),
	
	/**
	 * 奖品已经开奖或已结束
	 */
	PRIZE_WON_OR_HAS_ENDED(30013, "奖品已经开奖或已结束"),
	
	/**
	 * 该商圈对应的集团没有配置AppId请先配置
	 */
	NOT_APPID(30014, "该商圈对应的集团没有配置AppId请先配置"),
	
	/**
	 * 奖品已过期
	 */
	PRIZE_EXPIRED(30015, "奖品已过期"),
	
	/**
	 * 分享人信息不存在
	 */
	SHARER_DOES_NOT_EXIST(30016, "分享人信息不存在"),
	/**
	 * 已经签到
	 */
	ALREADY_SIGN_IN(30017, "已经签到"),

	/**
	 * 确定开奖顺序
	 */
	MAKE_SURE_PRIZE_ORDER(30018, "请确定开奖顺序"),

	/**
	 * 报名已截止
	 */
	ACTIVITY_ALREADY_START(30019, "报名已截止"),

	GIFT_BAG_ID_NOT_EMPTY(30020, "礼包id不能为空"),


	SKU_TYPE_ERROR(30021, "商品类型错误"),

	SKU_LIST_EMPTY(30022, "礼包未包含商品"),

	SKU_NOT_EXIST(30023, "商品不存在"),

	SKU_NOT_LOWER(30024, "%s商品未下架"),

	NUM_IS_EMPTY(30025, "数量不能为空"),

	STOCK_IS_LESS(30026, "%s库存不足"),

	PARK_COUPON_NOT_EXIST(30027, "停车券不存在"),

	CASH_COUPON_NOT_EXIST(30028, "现金券不存在"),

	MOBILE_IS_EMPTY(30029, "发放手机号不能为空"),

	ISSUEDETAIL_NOT_FIND(30030, "找不到发放记录"),

	GOODS_PICKUP(30031, "有商品已核销，不能撤回"),

	GIFT_BAG_NOT_EXIST(30032, "礼包不存在"),
	/**
	 * 手机号格式不正确
	 * */
	PHONE_WRONG_FORMAT(30033,"%s手机号格式不正确"),
	EVENT_ITEM_TYPE_MUST_BE_SINGLE(30034,"活动物品类型必须单一"),
	THE_NAME_OF_THE_EVENT_ITEM_CANNOT_BE_REPEATED(30035,"活动物品名称不能重复"),
	PRIZE_ID_NOT_EMPTY(30036, "奖品Id不能为空"),

	ACTIVITY_ID_NOT_EMPTY(30037, "活动Id不能为空"),
	/**
	 * 状态码说明
	 */
	TODO(30000, "奖品错误信息");
	
	private final Integer code;

	private final String message;

	private ActivityCode(Integer code, String message) {
		this.code = code;
		this.message = message;
	}

	public Integer getCode() {
		return code;
	}

	public String getMessage() {
		return message;
	}

	/**
	 * 把code转化为ResponseCode枚举
	 * 
	 * @param code 代码
	 * @return
	 */
	public static ActivityCode from(Integer code) {
		if (code == null) {
			return null;
		}
		return CODE_MAP.get(code);
	}

	/**
	 * Code Map for ResponseCode
	 */
	private static final Map<Integer, ActivityCode> CODE_MAP = Stream.of(ActivityCode.values())
			.collect(Collectors.toMap(ActivityCode::getCode, e -> e));
	
}
